home *** CD-ROM | disk | FTP | other *** search
/ PC World 2006 November / PCWorld_2006-11_cd.bin / domacnost a kancelar / findgraph / fgraph.exe / {app} / UserModels / models.h < prev    next >
C/C++ Source or Header  |  2004-10-06  |  3KB  |  96 lines

  1. #if !defined(AFX_MODELS_H_)
  2. #define AFX_MODELS_H_
  3.  
  4. // Models.h
  5.  
  6. typedef void (*PToFuncName )(LPTSTR lpszName, int nLen);
  7. typedef void (*PToFuncForm )(LPTSTR lpszName, int nLen);
  8. typedef int  (*PToFuncCalc )(double *pfParams, int nParams, double u, double *px, double *py);
  9. typedef int  (*PToFuncCheck)(double *pfParams, int nParams);
  10. typedef int  (*PToFuncDefau)(double *pfParams, int nParams, double *px, double *py, BOOL bNormed);
  11.  
  12.  
  13. #define  VAL_NO  0.
  14.  
  15. struct FuncDesc
  16. {
  17.     int                m_nId;
  18.     PToFuncName        m_pFuncName ;
  19.     PToFuncForm        m_pFuncForm ;
  20.     PToFuncCalc        m_pFuncCalc ;
  21.     PToFuncCheck    m_pFuncCheck;
  22.     PToFuncDefau    m_pFuncDefau;
  23. };
  24.  
  25. FuncDesc *PFittingDescInId    (int nId);
  26. int          FittingModelsList    (int nIdList, int *pnIds, int *pNum);
  27.  
  28.  
  29. /////////////////////////////////////////////////////////////////////////////////////////////////
  30.  
  31. #define X_MIN   px[0]
  32. #define X_MAX   px[1]
  33. #define X_MED   px[2]
  34. #define Y_MIN   py[0]
  35. #define Y_MAX   py[1]
  36. #define Y_MED   py[2]
  37.  
  38. #define A_PARAM pfParams[0]
  39. #define B_PARAM pfParams[1]
  40. #define C_PARAM pfParams[2]
  41. #define D_PARAM pfParams[3]
  42. #define G_PARAM pfParams[4]
  43. #define H_PARAM pfParams[5]
  44. #define K_PARAM pfParams[6]
  45. #define L_PARAM pfParams[7]
  46. #define M_PARAM pfParams[8]
  47.  
  48.  
  49.  
  50. // Check fitting parameters
  51. int Only1Param(double *pfParams, int nParams);
  52. int OnlyBParam(double *pfParams, int nParams);
  53. int Only2Param(double *pfParams, int nParams);
  54. int Only3Param(double *pfParams, int nParams);
  55. int Only4Param(double *pfParams, int nParams);
  56. int Only5Param(double *pfParams, int nParams);
  57. int OnlyACDPrm(double *pfParams, int nParams);
  58.  
  59.  
  60. //////////////////////////////////////////////////////////////////////////////////////////////////
  61. // Fitting models
  62.  
  63. #define DEFINE_MODEL(model) void model##_Name(LPTSTR lpszName, int nLen);\
  64.                             void model##_Form(LPTSTR lpszName, int nLen);\
  65.                             int  model##_Calc(double *pfParams, int nParams, double u, double *px, double *py);\
  66.                             int  model##_Check(double *pfParams, int nParams);\
  67.                             int  model##_Defau(double *pfParams, int nParams, double *px, double *py, BOOL bNormed);
  68.  
  69. #define MODELS_LIST_START() static FuncDesc  g_ListFunc[] = {
  70. #define MODELS_LIST_END()   -1, NULL, NULL, NULL, NULL, NULL};
  71.  
  72. #define MODELS_LIST_ADD(id, model)  id, model##_Name, model##_Form, model##_Calc, model##_Check, model##_Defau,
  73.  
  74.  
  75. DEFINE_MODEL(Poly)
  76. DEFINE_MODEL(S2Bind)
  77. DEFINE_MODEL(S2Comp)
  78. DEFINE_MODEL(E2Decay)
  79. DEFINE_MODEL(E2Assoc)
  80. DEFINE_MODEL(D2Biph)
  81. DEFINE_MODEL(DAssym)
  82. DEFINE_MODEL(L2Biph)
  83. DEFINE_MODEL(S2Gauss)
  84. DEFINE_MODEL(S2Loren)
  85. /*
  86. void S2Bind_Name (LPTSTR lpszName, int nLen);
  87. void S2Bind_Form (LPTSTR lpszName, int nLen);
  88. int  S2Bind_Calc (double *pfParams, int nParams, double u, double *px, double *py);
  89. int  S2Bind_Check(double *pfParams, int nParams);
  90. int  S2Bind_Defau(double *pfParams, int nParams, double *px, double *py, BOOL bNormed);
  91. */
  92.  
  93.  
  94. #endif // !defined(AFX_MODELS_H_)
  95.  
  96.